﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
using System.Web.Configuration;
using System.Configuration;

namespace Blog
{
    public class MvcApplication : System.Web.HttpApplication
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
            );
        }

        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            RegisterRoutes(RouteTable.Routes);

            ConnectionStringSettings appConStringSetting = WebConfigurationManager.ConnectionStrings["ApplicationServices"];
            ConnectionStringSettings blogConStringSetting = WebConfigurationManager.ConnectionStrings["BlogConnectionString"];
            Configuration config = null;

            if (appConStringSetting != null)
                Blog.Core.ViewController.ApplicationConnectionString = appConStringSetting.ConnectionString;
            else 
            {
                config = WebConfigurationManager.OpenWebConfiguration(Context.Request.ApplicationPath);
                appConStringSetting = new ConnectionStringSettings("ApplicationServices", Blog.Core.ViewController.ApplicationConnectionString);
                config.ConnectionStrings.ConnectionStrings.Add(appConStringSetting);
            }

            if (blogConStringSetting != null)
                Blog.Core.ViewController.BlogConnectionString = blogConStringSetting.ConnectionString;
            else 
            {
                if (config == null)
                    config = WebConfigurationManager.OpenWebConfiguration(Context.Request.ApplicationPath);

                blogConStringSetting = new ConnectionStringSettings("BlogConnectionString", Blog.Core.ViewController.BlogConnectionString);
                config.ConnectionStrings.ConnectionStrings.Add(blogConStringSetting);
            }

            if (config != null)
            {
                config.Save(System.Configuration.ConfigurationSaveMode.Modified);
                ConfigurationManager.RefreshSection("connectionStrings");
            }
        }

    }
}